1609B - William the Vigilant - CodeForces Solution


implementation strings *1100

Please click on ads to support us..

Python Code:

import sys
input=lambda:sys.stdin.readline().rstrip()
N,Q=map(int,input().split())
comp=['a','b','c']
S=list(input())
ans=sum([S[i:i+3]==comp for i in range(N-2)])
for i in range(Q):
	temp=0
	q=input().split()
	ind=int(q[0])-1
	for j in range(max(ind-2,0),min(ind+1,N-2)):
		ans-=(S[j:j+3]==comp)
	S[ind]=q[1]
	for j in range(max(ind-2,0),min(ind+1,N-2)):
		ans+=(S[j:j+3]==comp)
	print(ans)

C++ Code:

#include<bits/stdc++.h>
using namespace std;

int main(){

int n,q;
cin>>n>>q;
string s="";
cin>>s;int ans=0;
if(s.size()>2){
for(int i=1;i<n-1;i++){ 
if(s[i]=='b'&&s[i-1]=='a'&&s[i+1]=='c'){
    ans++;
}
}
}
while(q--){

int pos;char sc;
cin>>pos>>sc;

if(s[pos-1]!=sc){

if(pos-2>=0&&pos<n&&s[pos-1]=='b'&&s[pos-1-1]=='a'&&s[pos-1+1]=='c'){
ans--;

}else if(pos-1>=0&&pos+1<n&&s[pos-1]=='a'&&s[pos]=='b'&&s[pos+1]=='c'){
    ans--;
}else if(pos-3>=0&&pos-1<n&&s[pos-1]=='c'&&s[pos-1-1]=='b'&&s[pos-3]=='a'){
    ans--;
}

if(pos>=0&&pos+1<n&&sc=='a'&&s[pos]=='b'&&s[pos+1]=='c'){
    ans++;
}else if(pos-2>=0&&pos<n&&sc=='b'&&s[pos-1-1]=='a'&&s[pos]=='c'){
    ans++;
}else if(pos-3>=0&&pos-2<n&&sc=='c'&&s[pos-2]=='b'&&s[pos-3]=='a'){
    ans++;
}


s[pos-1]=sc;

}
cout<<ans<<endl;
}
// another approach not came into my mind
}


Comments

Submit
0 Comments
More Questions

1002. Find Common Characters
1602A - Two Subsequences
1555A - PizzaForces
1607B - Odd Grasshopper
1084A - The Fair Nut and Elevator
1440B - Sum of Medians
1032A - Kitchen Utensils
1501B - Napoleon Cake
1584B - Coloring Rectangles
1562B - Scenes From a Memory
1521A - Nastia and Nearly Good Numbers
208. Implement Trie
1605B - Reverse Sort
1607C - Minimum Extraction
1604B - XOR Specia-LIS-t
1606B - Update Files
1598B - Groups
1602B - Divine Array
1594B - Special Numbers
1614A - Divan and a Store
2085. Count Common Words With One Occurrence
2089. Find Target Indices After Sorting Array
2090. K Radius Subarray Averages
2091. Removing Minimum and Maximum From Array
6. Zigzag Conversion
1612B - Special Permutation
1481. Least Number of Unique Integers after K Removals
1035. Uncrossed Lines
328. Odd Even Linked List
1219. Path with Maximum Gold